package edu.ues21.tcs.ecommerce2011.mvc.model;

/**
*
* @author eandre fmantaras
*/

import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import java.sql.Date;
import java.sql.Time;

@Entity
@Table(name = "Pedido")
public class Pedido {
	
	 @Id
	 @GeneratedValue
	 @Column(name = "idpedido")
	 private Integer idPedido;
	 
	 @Column(name = "fecha")
	 private Date fecha;
	 
	 @Column(name = "hora")
	 private Time hora;
	 
	 	
	 @ManyToOne
	 @JoinColumn(name = "cliente")
	 private Cliente cliente;
	 
	 @OneToOne
	 @JoinColumn(name = "estado")
	 private Estado estado;
	 
	 @OneToOne
	 @JoinColumn(name = "formaPago")
	 private FormaPago formaPago;
	 
	 @OneToMany(fetch = FetchType.EAGER, mappedBy = "pedido")
	 @Column(name = "idDetallePedido")
	 private List<DetallePedido> detallepedidos;

	 
	public Pedido() {
		super();
		// TODO Auto-generated constructor stub
	}

	public Pedido(Integer idPedido, Date fecha, Time hora, Cliente cliente,
			Estado estado, FormaPago formaPago, List<DetallePedido> detalles) {
		super();
		this.idPedido = idPedido;
		this.fecha = fecha;
		this.hora = hora;
		this.cliente = cliente;
		this.estado = estado;
		this.formaPago = formaPago;
		this.detallepedidos = detalles;
	}

	public List<DetallePedido> getDetallepedidos() {
		return detallepedidos;
	}

	public void setDetallepedidos(List<DetallePedido> detallepedidos) {
		this.detallepedidos = detallepedidos;
	}

	public Integer getIdPedido() {
		return idPedido;
	}

	public void setIdPedido(Integer idPedido) {
		this.idPedido = idPedido;
	}


	public Date getFecha() {
		return fecha;
	}

	public void setFecha(Date fecha) {
		this.fecha = fecha;
	}

	public Time getHora() {
		return hora;
	}

	public void setHora(Time hora) {
		this.hora = hora;
	}

	public Cliente getCliente() {
		return cliente;
	}

	public void setCliente(Cliente cliente) {
		this.cliente = cliente;
	}

	public Estado getEstado() {
		return estado;
	}

	public void setEstado(Estado estado) {
		this.estado = estado;
	}

	public FormaPago getFormaPago() {
		return formaPago;
	}

	public void setFormaPago(FormaPago formaPago) {
		this.formaPago = formaPago;
	}

	@Override
	public String toString() {
		 StringBuilder ret=new StringBuilder("{Pedido [idPedido=" + idPedido + ", fecha=" + fecha.toString() + ", hora="
				+ hora.toString() + ", cliente=" + cliente.getRazonSocial() + ", estado=" + estado.getNombreEstado()
				+ ", formaPago=" + formaPago.getTipoPago()+"}");
		 if(detallepedidos!=null && !detallepedidos.isEmpty()){
	            for(DetallePedido d:detallepedidos){
	                ret.append("\n    "+d.toString());
	            }
	        }
	        return ret.toString();
	       
	}

//	@Override
//	public String toString() {
//		return "Pedido [idPedido=" + idPedido + ", fecha=" + fecha + ", hora="
//				+ hora + ", cliente=" + cliente.getRazonSocial() + ", estado=" + estado.getNombreEstado()
//				+ ", formaPago=" + formaPago.getTipoPago() + "]";
//	}
	 
	 
	
	
}

